package com.taotao.usercoupon.service.impl;
import com.taotao.common.security.utils.SecurityUtils;
import com.taotao.coupon.domain.Coupon;
import com.taotao.coupon.domain.SkuCoupon;
import com.taotao.coupon.domain.UserCoupon;
import com.taotao.system.model.LoginUser;
import com.taotao.usercoupon.mapper.CouponMapper;
import com.taotao.usercoupon.mapper.SkuCouponMapper;
import com.taotao.usercoupon.service.CouponService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * @ClassName CouponServiceImpl
 * @Description 描述
 * @Author ChangLe.Liu
 * @Date 2025/1/13 20:26
 */
@Service
public class CouponServiceImpl implements CouponService{
    @Autowired
    private CouponMapper couponMapper;
    @Autowired
    private SkuCouponMapper skuCouponMapper;
    /**
     * 首页优惠券列表
     *
     * @param
     * @return
     */
    @Override
    public List<Coupon> oneCouponList(Integer applyStatus) {
        List<Coupon> oneCouponList = couponMapper.oneCouponList(applyStatus);
        return oneCouponList;
    }
    /**
     * 用户领取优惠卷
     *
     * @param
     * @return
     */
    @Override
    public void userCouponAdd(Long couponId) {
        //获取登录用户
        Long userId = SecurityUtils.getUserId();
        //获取所有优惠卷信息
        Coupon coupon = couponMapper.selectByCoupon(couponId);
        if (coupon==null){
            throw  new RuntimeException("优惠券不存在");
        }
        Date now = new Date();
        if(now.before(coupon.getUseingBeginTime())){
            throw new RuntimeException("优惠券还没到领取时间");
        }
        //获取商品优惠券信息
        SkuCoupon skuCoupon=skuCouponMapper.selectBySkuCoupon(couponId);
        if (skuCoupon==null){
            throw  new RuntimeException("优惠券不存在");
        }
        UserCoupon userCoupon = new UserCoupon();
        userCoupon.setCouponId(couponId);
        userCoupon.setUserId(userId);
        userCoupon.setState(1);
        userCoupon.setStatus(0);
        userCoupon.setReceiveTime(new Date());
        couponMapper.userCouponAdd(userCoupon);
    }


}
